// //call

// Function.prototype.mycall = function(obj,...args){
//     obj.fn  = this

//     let result  =  obj.fn(...args)
//     delete obj.fn
//     return result

// }

// function sum(a, b, c) {
//     console.log(this.aa);
//     console.log(a + b + c);
//   }

//   var obj = { aa: 11 };
//   var re = sum.mycall(obj, '我的','名字是', 'lwt');
//   console.log(re);

// function mynew(fnc,...arr){
//     let obj = Object.create(fnc.prototype)
//     fnc.call(obj,arr)

//     return obj

// }
// console.log('-------------new----------');
// function a(name){
//     this.name = name
// }

// var b = mynew(a,'lwt')
// console.log(b);

// console.log(b.__proto__=== a.prototype);
// function say(company, academy, name) {
//   console.log(`${company}---${academy}---${name}`);
// }

// console.log("函数形参的个数" + say.length); //打印函数的参数个数

// //eg
// function mysay(company) {
//   return function (academy) {
//     return function (name) {
//       console.log(`${company}---${academy}---${name}`);
//     };
//   };
// }

// mysay("北京")("计算机")("lwt");

// function curry(fn) {
//   let len = fn.length;
//   return function temp() {
//     let args = [...arguments];
//       if (args.length >= len) {
//         return fn(...args);
//       }
//       else return function(){
//           return temp(...args,...arguments)
//       }
//   };
// }

// // 再写一遍
// function curry_(fn) {
//     var len = fn.length;
//     return function temp() {
//       let args = [...arguments];
//       if (args.length >= len) return fn(...args);
//       else
//         return function () {
//           return temp(...args, ...arguments);
//         };
//     };
//   }
//
// 求数组出现次数大于一半的
// num = [1, 2, 2, 2, 2, 5];
// function MoreThanHalfNum_Solution(num) {
//   // write code here
//   var map = new Map();
//   num.forEach((i) => {
//     if (map.has(i)) {
//       var tmp = map.get(i);
//       map.set(i, tmp + 1);
//     } else {
//       map.set(i, 1);
//     }
//   });
//   var big = 0;
//   var indexx = 0;
//   var mapIter = map.keys();
//   map.forEach((i, index) => {
//     if (i > big) {
//       big = i;
//       indexx = index;
//     }
//   });

//   console.log(indexx);
//   while (--indexx > 0) {
//     mapIter.next();
//   }

//   console.log(map);

//   console.log(mapIter);

//   if (big > Math.floor(num.length / 2)) return mapIter.next().value;
//   else {
//     return 0;
//   }
// }

function FindGreatestSumOfSubArray(array) {
  // write code here

  var res = array.reduce(function (res, item) {
    if (item > 0) return (res += item);
    return res
  }, 0);
  return res;
}
console.log(FindGreatestSumOfSubArray([1,-2,3,10,-4,7,2,-5]));
